#注意,因为ubuntu18.04.2是自带jdk11的,会导致jdk8开发的代码无法运行,需要卸载(sudo apt-get remove openjdk*)
# Author BiaoYang
#注意,这里虽然只有这一个基础镜像,但是实测必须加上版本号才能获取到(这里省略了eureka相关的配置)
#FROM 172.16.171.142:5000/ubuntu18.04.2_jdk8:v1.0.2
#上面的版本镜像时设置了JCE的版本
FROM 47.112.141.241:5000/jre8u231-font-alpine:latest
#jar文件名称
ENV file=eureka-server-1.0.0.jar
#运行环境(test)
ENV runEnv=test
ENV bind=0.0.0.0
#jdk环境变量(遇到基础镜像(/root/.bashrc也就是/~/.bashrc里和/etc/profile都设置了jdk环境变量)),基础镜像能运行java命令而
#通过基础镜像构建出来的镜像却找不到java命令也就是jdk的环境变量未生效,(但是以前随便你弄都是成功的),故而只能选择在此添加环境变量
#ENV JAVA_HOME=/opt/jdk/jdk1.8.0_131
#ENV JRE_HOME=${JAVA_HOME}/jre
#ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
#ENV PATH=${JAVA_HOME}/bin:$PATH
#维护者
MAINTAINER BiaoYang
#指定工作目录
WORKDIR /opt
#把文件添加到当前目录
ADD ${file} .
#指定启动容器时执行的命令,每个Dockerfile只能有一条CMD指令,如果指定了多条指令,则最后一条执行(会被启动时指定的命令覆盖)
CMD java -jar ./${file} --spring.profiles.active=${runEnv}  --server.address=${bind}

#实测mysql的连接也是这样的,使用localhost是使用不了的,所以需要通-p把端口映射出来,再通过宿主机ip进行通讯
#eureka注册中心需要指定ip,其他容器才能访问注册(特殊)--只要在这里设置了启动的eureka,配置里不对也不影响服务,因为这个是传递环境变量去启动的
#eureka的注册中心有个很大的坑,如果不是集群高可用的注册中心,那么就需要把eureka的注册中心放在一个固定的节点上,
#配置的时候使用ip:port的方式配置注册中心,这样其他容器就能找到了,这个就是映射ip到宿主机,然后其他容器通过宿主机
#的ip加上eureka服务的端口,就能成功注册到 eureka上了,localhost加eureka服务端口的方式是行不通的(实测),因为其他容器
#里的localhost指的是自己,自己的localhost下没有eureka服务,所以就一直注册不上了
#如果是多个eureka注册中心的高可用情况,也就是多个注册中心在多个节点上,那么就需要通过多个节点的DNS去解析成具体
#节点的ip然后再去注册服务,原理还是一样,就是eureka注册中心必须固定在某节点上,需要通过ip去访问